<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>IDA SDK: ask_form()/open_form()</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">IDA SDK
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="files.html"><span>Header&#160;Files</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">ask_form()/open_form()</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>This module describes how to generate a custom form. </p>
<pre></pre><pre>The following keywords might appear at the beginning of the 'form' argument
(case insensitive):</pre><pre>STARTITEM number</pre><pre>  where number is a number of input field the cursor will stand on.
  By default the cursor is in the first field of the dialog box.
  The input fields are numbered from 0 (the first field is field 0).</pre><pre>BUTTON name caption</pre><pre>  Alternative caption for a button. It may contain the character
  to highlight in this form:  ~Y~es
  Valid button names are: YES, NO, CANCEL
  For example:
      BUTTON YES Please do
      BUTTON NO Nope
      BUTTON CANCEL NONE</pre><pre>  By default the NO button is not displayed. If it is displayed, then
  the return value of the function will be different!
  (see the function description)</pre><pre>  Empty text means that there won't be any corresponding button.
  (you may also use NONE as the caption to hide it)</pre><pre>  A * after the button name means that this button will be the default:</pre><pre>    BUTTON CANCEL* Cancel</pre><pre>Next, if the dialog box is kept in IDA.HLP, the following may appear:
(this defines help context for the whole dialog box)</pre><pre>[]</pre><pre>If the form is not in IDA.HLP file, then it can have a built-in
help message. In this case the help screen should be enclosed in the
following keywords:</pre><pre>HELP
....
....
....
ENDHELP</pre><pre>Each keyword should be on a separate line.</pre><pre>Next there must be the title line and two empty lines.
Most of the text in the dialog box text string is copied to the dialog
without modification. There are three special cases:</pre><pre><ul>
<li>dynamic labels (format parameters)</li>
<li>callback arguments</li>
<li>input fields</li>
</ul>
</pre><pre>For example, this dialog box:</pre><pre>------ format:
      Sample dialog box</pre><pre>      This is sample dialog box for A
      using address %$</pre><pre>      &lt;~E~nter value:N:32:16::&gt;</pre><pre>------</pre><pre>Contains two dynamic labels (text A and address %$) and one input field
(numerical input box with the label "Enter value").</pre><pre>Parameters for the dynamic labels and input fields are taken from the
function's input arguments (va_list). The corresponding argument should
contain a pointer (sic, pointer) to the value to be displayed.</pre><pre>The dialog box above should be called as</pre><pre><div class="fragment"><div class="line"><span class="keywordtype">char</span> *<span class="keywordtype">string</span> = <span class="stringliteral">&quot;something&quot;</span>;</div>
<div class="line"><a class="code" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> addr = someaddr;</div>
<div class="line"><a class="code" href="pro_8h.html#aef265b11f25357d520dcfd40aa8c18f3">uval_t</a> answer = 0;</div>
<div class="line"><span class="keywordtype">int</span> ok = <a class="code" href="group___f_o_r_m___c.html#ga56bdea2f1808b588da54c343f42ebf41">ask_form</a>(format, <span class="keywordtype">string</span>, &amp;addr, &amp;answer);</div>
</div><!-- fragment --></pre><pre>Dynamic labels are used to specify variant parts of the dialog box text.
They use the following syntax:</pre><pre>      nT</pre><pre>where
      n  - optional decimal field ID, which may be used in the
           <a class="el" href="structform__actions__t.html" title="Functions available from formchgcb_t. ">form_actions_t</a> calls to get/set label value at runtime
      T  - a character specifying type of input field. All input field
           types (except B and K) are valid format specifiers. See below
           for the list.</pre><pre>There are two special specifiers for callbacks:</pre><pre>The combination '%/' corresponds to a callback function that will be
called when any of the fields is modified. The callback type is <a class="el" href="kernwin_8hpp.html#a435eebdaa696149cdba8213abf460465" title="Callback. ">formchgcb_t</a>.
There can be only one such callback.</pre><pre>The combination '%*' is used to store user data (void *) in the form.
This data can be later retrieved from the <a class="el" href="kernwin_8hpp.html#a435eebdaa696149cdba8213abf460465" title="Callback. ">formchgcb_t</a> callback via the
form action method get_ud().</pre><pre>Input fields use the following syntax:</pre><pre>&lt;label:type:width:swidth:[]&gt;</pre><pre>where
      label - any text string serving as label for the input field
              the label may contain hotkey definition like this: "~O~pen"
              (O keystroke is hotkey here)
      type  - a character specifying type of input field.
              The form() function will perform initial validation of
              value specified by the user and convert it appropriately.
              See table of input field types below. The type can be followed
              by a decimal number, an input field ID.
      width - for A, I, T, X: decimal number specifying size of the buffer
                passed for text input fields (including terminating 0).
                if omitted or &lt;0, assumed to be at least MAXSTR</pre><pre>              for B, k: the code generated when the user presses the button (passed to the button callback)
              for f (path to file) this attribute specifies the dialog type:
                0-'open file' dialog box
                1-'save file' dialog box
              for F (folder) it is ignored (buffer is assumed to be at least QMAXPATH long)
              for b (dropdown list) this attribute specifies the readonly attribute:
                0   - read-only dropdown list
                &gt; 0 - editable dropdown list
              for n, N, Y, O, H, M, D, L, l, S, $, q: decimal number specifying maximum
                possible number of characters that can be entered into the input field
              for the rest of controls: this field is ignored
      swidth -decimal number specifying width of visible part of input field.
              this number may be omitted.
      []- help context for the input field. you may replace the
              help context with '::' (two colons) if you don't want to
              specify help context. The help context is a number of help
              page from IDA.HLP file.</pre><pre>Input field types                               va_list parameter
-----------------                               -----------------</pre><pre>A - UTF-8 string                                char* at least MAXSTR size
q - UTF-8 string                                <a class="el" href="pro_8h.html#a386c10c6aa4340f1d63df85f40454fce" title="regular string ">qstring</a>*
h - HTML text                                   char * (only for GUI version; only for dynamic labels; no input)
S - segment                                     <a class="el" href="pro_8h.html#a633a07e2920351503da14c0adcd3edfd" title="segment selector ">sel_t</a>*
N - hex number, C notation                      <a class="el" href="pro_8h.html#aef265b11f25357d520dcfd40aa8c18f3" title="unsigned value used by the processor. ">uval_t</a>*
n - signed hex number, C notation               <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1" title="signed value used by the processor. ">sval_t</a>*
L - C notation number                           <a class="el" href="pro_8h.html#a2f5563986d7f95e4fad5876c17d9cdda" title="unsigned 64 bit value ">uint64</a>*
    (prefix 0x - hex, 0 - octal, otherwise decimal)
l - same as L but with optional sign            <a class="el" href="pro_8h.html#af755b91e0abdf71f5715f00e68b35e0a" title="signed 64 bit value ">int64</a>*
M - hex number, no "0x" prefix                  <a class="el" href="pro_8h.html#aef265b11f25357d520dcfd40aa8c18f3" title="unsigned value used by the processor. ">uval_t</a>*
D - decimal number                              <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1" title="signed value used by the processor. ">sval_t</a>*
O - octal number, C notation                    <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1" title="signed value used by the processor. ">sval_t</a>*
Y - binary number, "0b" prefix                  <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1" title="signed value used by the processor. ">sval_t</a>*
H - char value, C notation                      <a class="el" href="pro_8h.html#a430639fcfd4601cd6cb310ae71481fe1" title="signed value used by the processor. ">sval_t</a>*
$ - address                                     <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a" title="effective address ">ea_t</a>*
I - ident                                       char* at least <a class="el" href="name_8hpp.html#a56739a38cf3fb0c5d7d842fe94f96f86" title="Maximum length of a name in IDA (with the trailing zero) ">MAXNAMELEN</a> size (obsolete, will be removed)
i - ident                                       <a class="el" href="pro_8h.html#a386c10c6aa4340f1d63df85f40454fce" title="regular string ">qstring</a>*
B - button                                      <a class="el" href="kernwin_8hpp.html#ac45b0287a792bd1745fc5cd54a24978b" title="Callback. ">buttoncb_t</a>*
k - txt: button (same as B)/gui: hyperlink      <a class="el" href="kernwin_8hpp.html#ac45b0287a792bd1745fc5cd54a24978b" title="Callback. ">buttoncb_t</a>*
K - color button                                <a class="el" href="pro_8h.html#a3df5040891132e50157aee66affdf1de" title="background color in RGB ">bgcolor_t</a>*
F - path to folder                              char* at least <a class="el" href="pro_8h.html#af5d3ed78c3d158e9d6a1863f063c3648" title="maximum number of characters in a path specification ">QMAXPATH</a> size
f - path to file                                char* at least <a class="el" href="pro_8h.html#af5d3ed78c3d158e9d6a1863f063c3648" title="maximum number of characters in a path specification ">QMAXPATH</a> size
T - type declaration                            char* at least <a class="el" href="pro_8h.html#a5189100144828825ca4369c28c1261d1" title="maximum string size ">MAXSTR</a> size
X - command                                     char* at least <a class="el" href="pro_8h.html#a5189100144828825ca4369c28c1261d1" title="maximum string size ">MAXSTR</a> size
E - chooser                                     <a class="el" href="structchooser__base__t.html" title="Chooser object. ">chooser_base_t</a> * - embedded chooser
                                                <a class="el" href="pro_8h.html#a3fb92c6beff4e1e004a4ef5a2e356391" title="vector of sizes ">sizevec_t</a> * - in/out: selected lines (0-based)
                                                  (NB: this field takes two args)
t - multi line text control                     <a class="el" href="structtextctrl__info__t.html" title="Multi line text control, used to embed a text control in a form. ">textctrl_info_t</a> *
b - dropdown list                               <a class="el" href="pro_8h.html#a823b67c620f6cdca97e1d969ea4a9b02" title="vector of strings ">qstrvec_t</a> * - the list of items
                                                int* or <a class="el" href="pro_8h.html#a386c10c6aa4340f1d63df85f40454fce" title="regular string ">qstring</a>* - the preselected item
                                                  (<a class="el" href="pro_8h.html#a386c10c6aa4340f1d63df85f40454fce" title="regular string ">qstring</a>* when the combo is editable, i.e. width field is &gt;0)</pre><pre>The M, n, N, D, O, Y, H, $ fields try to parse the input as an IDC expression
and convert the result into the required value type</pre><pre>If the buffer for 'F' field contains filemasks and descriptions like this:
  *.exe|Executable files,*.dll|Dll files
they will be used in the dialog box filter.</pre><pre>The hint message can be specified before the label enclosed in '#':</pre><pre>&lt;#hint message::label:...&gt;</pre><pre>Radiobuttons and checkboxes are represented by:</pre><pre>&lt;label:type&gt;
&lt;label:type&gt;&gt;         - end of block</pre><pre>where valid types are C and R
(you may use lowercase 'c' and 'r' if you need to create two radiobutton
or checkbox groups on the same lines). The field ID of the whole group
can be specified between the brackets: &lt;label:type&gt;ID&gt;</pre><pre>field types           va_list parameter
-----------           -----------------</pre><pre>C - checkbox          ushort*                 bit mask of checkboxes
R - radiobutton       ushort*                 number of radiobutton</pre><pre>The box title and hint messages can be specified like this:</pre><pre>&lt;#item hint::title::box hint::label:type&gt;</pre><pre>The title and the box hint can be specified only in the first item of the box.
If the hint doesn't exist, it should be specified as an empty hint (##title##)
The subsequent items can have an item hint only:</pre><pre>&lt;#item hint::label:type&gt;</pre><pre>Initial values of input fields are specified in the corresponding
input/output parameters (taken from va_list array).</pre><pre>OK, Cancel and (possibly) Help buttons are displayed at the bottom of
the dialog box automatically. Their captions can be changed by the BUTTON
keywords described at the beginning of this page.</pre><pre>Input field definition examples:</pre><pre> &lt;Kernel analyzer options ~1~:B:0:::&gt;
 &lt;~A~nalysis enabled:C&gt;
 &lt;~I~ndicator enabled:C&gt;&gt;
 &lt;Names pre~f~ix  :A:15:15::&gt;
 &lt;~O~utput <a href="file:f:1:64::">file:f:1:64::</a>&gt;
 &lt;~O~utput directory:F::64::&gt;</pre><pre>Resizable fields can be separated by splitter (GUI  only) represented by &lt;|&gt;
Splitter usage example:
 &lt;~Chooser~:E1:0:40:::&gt;&lt;|&gt;&lt;~E~ditor:t2:0:40:::&gt;</pre><pre></pre> <table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga3e2bf943ddcd9256fadc7cf0913bdfbf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3e2bf943ddcd9256fadc7cf0913bdfbf"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_o_r_m___c.html#ga3e2bf943ddcd9256fadc7cf0913bdfbf">vask_form</a> (const char *format, va_list va)</td></tr>
<tr class="memdesc:ga3e2bf943ddcd9256fadc7cf0913bdfbf"><td class="mdescLeft">&#160;</td><td class="mdescRight">See <a class="el" href="group___f_o_r_m___c.html#ga56bdea2f1808b588da54c343f42ebf41" title="Display a dialog box and wait for the user. ">ask_form()</a> <br /></td></tr>
<tr class="separator:ga3e2bf943ddcd9256fadc7cf0913bdfbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga56bdea2f1808b588da54c343f42ebf41"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_o_r_m___c.html#ga56bdea2f1808b588da54c343f42ebf41">ask_form</a> (const char *form,...)</td></tr>
<tr class="memdesc:ga56bdea2f1808b588da54c343f42ebf41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Display a dialog box and wait for the user.  <a href="#ga56bdea2f1808b588da54c343f42ebf41">More...</a><br /></td></tr>
<tr class="separator:ga56bdea2f1808b588da54c343f42ebf41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac0a6440bc79c64499e55e53d263aa148"><td class="memItemLeft" align="right" valign="top">TWidget *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_o_r_m___c.html#gac0a6440bc79c64499e55e53d263aa148">vopen_form</a> (const char *format, int flags, va_list va)</td></tr>
<tr class="memdesc:gac0a6440bc79c64499e55e53d263aa148"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and/or activate dockable modeless form (<a class="el" href="kernwin_8hpp.html#a4a23e389ff9cbf1cd31179ca2f393334ab90ae4abe5dc7cb69cb2cee54543dab8" title="ui: see vopen_form() ">ui_open_form</a>).  <a href="#gac0a6440bc79c64499e55e53d263aa148">More...</a><br /></td></tr>
<tr class="separator:gac0a6440bc79c64499e55e53d263aa148"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad13585334cbdbf7bc9910cc166137d19"><td class="memItemLeft" align="right" valign="top">TWidget *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_o_r_m___c.html#gad13585334cbdbf7bc9910cc166137d19">open_form</a> (const char *form, int flags,...)</td></tr>
<tr class="memdesc:gad13585334cbdbf7bc9910cc166137d19"><td class="mdescLeft">&#160;</td><td class="mdescRight">Display a dockable modeless dialog box and return a handle to it.  <a href="#gad13585334cbdbf7bc9910cc166137d19">More...</a><br /></td></tr>
<tr class="separator:gad13585334cbdbf7bc9910cc166137d19"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga56bdea2f1808b588da54c343f42ebf41"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int ask_form </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>form</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Display a dialog box and wait for the user. </p>
<p>If the form contains the "BUTTON NO &lt;title&gt;" keyword, then the return values are the same as in the <a class="el" href="kernwin_8hpp.html#a29d876e50747b86d842c0abaf6d0d7d8" title="Display a dialog box and get choice from &quot;Yes&quot;, &quot;No&quot;, &quot;Cancel&quot;. ">ask_yn()</a> function (<a class="el" href="group___a_s_k_b_t_n__.html">Button IDs</a>) </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">form</td><td>dialog box as a string. see <a class="el" href="group___f_o_r_m___c.html">ask_form()/open_form()</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">0</td><td>the user pressed Esc, no memory to display or form syntax error a dialog box (a warning is displayed in this case). all variables retain their original values. </td></tr>
    <tr><td class="paramname">1</td><td>ok, all input fields are filled and validated. </td></tr>
    <tr><td class="paramname">-1</td><td>the form had BUTTON CANCEL and the user cancelled the dialog </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gac0a6440bc79c64499e55e53d263aa148"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">TWidget* vopen_form </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">va_list&#160;</td>
          <td class="paramname"><em>va</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Create and/or activate dockable modeless form (<a class="el" href="kernwin_8hpp.html#a4a23e389ff9cbf1cd31179ca2f393334ab90ae4abe5dc7cb69cb2cee54543dab8" title="ui: see vopen_form() ">ui_open_form</a>). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">format</td><td>string </td></tr>
    <tr><td class="paramname">flags</td><td><a class="el" href="group___w_i_d_g_e_t___o_p_e_n.html">Widget open flags</a> </td></tr>
    <tr><td class="paramname">va</td><td>args </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>pointer to resulting TWidget </dd></dl>

</div>
</div>
<a class="anchor" id="gad13585334cbdbf7bc9910cc166137d19"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">TWidget* open_form </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>form</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Display a dockable modeless dialog box and return a handle to it. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">form</td><td>dialog box as a string. see <a class="el" href="group___f_o_r_m___c.html">ask_form()/open_form()</a> </td></tr>
    <tr><td class="paramname">flags</td><td><a class="el" href="group___w_i_d_g_e_t___o_p_e_n.html">Widget open flags</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>handle to the form or NULL. the handle can be used with TWidget functions: <a class="el" href="kernwin_8hpp.html#ad27da33115a2f2e7bddbbf5d29aa814b" title="Close widget (ui_close_widget, only gui version). ">close_widget()</a>/activate_widget()/etc </dd></dl>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>
